package com.shanjupay.merchant.api;


import com.shanjupay.common.domain.BusinessException;
import com.shanjupay.common.domain.PageVO;
import com.shanjupay.merchant.api.dto.MerchantDTO;
import com.shanjupay.merchant.api.dto.StaffDTO;
import com.shanjupay.merchant.api.dto.StoreDTO;


public interface MerchantService {

    /*
    * 根据ID查询商户详细信息
    *
    *
    * */
    MerchantDTO  queryMerchantById(Long id);

    /*
    * 注册商户，接收手机号  账号 密码  为了可扩展性使用merchantDTO 接收数据
    * @param merchantDTO 商户的注册消息
    * @return MerchantDTO 注册成功的商户信息
    * */
    MerchantDTO createMerchantDTO(MerchantDTO merchantDTO) throws BusinessException;


    /*
    * 资质申请的接口
    * @param merchantId 商户id
    * @param merchantDTO 资质申请提交的申请信息
    *
    * */
    void applyMerchant(Long merchantId,MerchantDTO merchantDTO) throws  BusinessException;

    /*
    * 新增门店接口
    *@param storeDTO 新增的门店
    *@Return 返回的新增成功的门店DTO
    */

 StoreDTO createStore(StoreDTO storeDTO) throws BusinessException;
 /*
 * 新增员工
 * @param staffDTO  添加员工的dto类转化entity插入到staff员工表中
 * @return StaffDTO 返回添加成功的员工
 * */
 StaffDTO createStaff(StaffDTO staffDTO) throws BusinessException;

 /*
 * 将员工设置门店管理员
 * 实质往员工于门店的关联表添加数据
 *
 * */
   void  bindStaffToStore(Long storeId , Long staffId) throws BusinessException;
   //根据租户id 在商户表中进行查询商户
    MerchantDTO queryMerchantByTenantId(Long tenantId) throws BusinessException;
   //分页查询当前商户下的门店
   PageVO<StoreDTO> queryStoreByPage(StoreDTO storeDTO,Integer pageNo,Integer pageSize) throws  BusinessException;

   //根据商户id和门店id进行查询是否存在对应 ，联合查询store表是否有这个数据
    Boolean queryStoreInMerchant(Long storeId,Long merchantId);

}
